#pragma once
#include <Windows.h>
#include "resource.h"
#include <stdlib.h>
#include <time.h>

int g_arrBoard[20][10] = { 0 };//游戏区域网格数组，0表示空白，1表示有方块
int g_arrNext[4][4] = { 0 };//下一个方块数组
int g_arrCurrent[4][4] = { 0 };//当前方块数组
int arrTemp[4][4] = { 0 };//临时数组，用于旋转方块
int g_nCurrentX = 0;//当前方块在游戏区域中的x坐标
int g_nCurrentY = 0;//当前方块在游戏区域中的y坐标
int score = 0;//得分

void onReturn(HWND hWnd);//开始游戏
void CreateNext();//生成下一个方块
void CreateCurrent();//生成当前方块
void MoveDown();//下移
bool CanMoveDown();//判断是否可以下移
void MoveLeft();//左移
bool CanMoveLeft();//判断是否可以左移
void MoveRight();//右移
bool CanMoveRight();//判断是否可以右移
//判断是否可以消除行
bool CanClearLine(int nLine);
void onTimer(HWND hWnd);//定时器回调函数
void onDown(HWND hWnd);//加速下落
void onStop(HWND hWnd);//暂停，继续
void onChange();//旋转
bool CanRotate();//判断是否可以旋转
bool IsGameOver();//判断游戏是否结束
void Reset(HWND hWnd);//重置游戏
bool IsStop = false;//是否暂停
void onPaint(HDC hdc);//绘制游戏区域
void DoublePaint(HDC hdc);//双缓冲绘制

LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam);//主窗口处理函数